import pymysql


class Dbutil:
    conn = None



    # 封装数据库链接的方法
    # 定义成类方法和私有方法
    @classmethod
    def __connect_db(cls):
        cls.conn = pymysql.Connect(host="211.103.136.244", port=7061, user="student", password="iHRM_student_2022",
                                   database='ihrm', charset="utf8")
        return cls.conn

    # 封装数据库关闭的方法

    @classmethod
    def __close_db(cls):
        cls.conn.close()

    # 封装查询数据库的方法
    @classmethod
    def query_db(cls, sql):
        cursor=0
        result=0
        try:
            # 创建数据库链接
            cls.conn = cls.__connect_db()
            # 获取游标
            cursor = cls.conn.cursor()
        # 执行sql 获取结果集  返回结果
            cursor.execute(sql)
            result = cursor.fetchone()
        except Exception as err:
            print("查询数据错误：",err)
        finally:
        # 关闭游标
            cursor.close()
        # 关闭链接
            cls.__close_db()
            return result

    # 封装增删改的方法
    @classmethod
    def uid_db(cls, sql):
        cursor = 0
        try:
        # 创建数据库链接
            cls.conn=cls.__connect_db()
        # 获取游标
            cursor=cls.conn.cursor()
        # 执行sql 打印影响的行数
            cursor.execute(sql)
            affect_rows= cls.conn.affected_rows()
            print("影响数据库的行数：",affect_rows)
        # 事务的提交、回滚
            cls.conn.commit()
        except Exception as zss :
            print("数据错误：",zss)
            cls.conn.rollback()
        finally:
            # 关闭游标
            cursor.close()
            # 关闭链接
            cls.__close_db()
if __name__ == '__main__':
    # query_sql = "select * from t_book;"
    # res = Dbutil.query_db(query_sql)
    # print("res=",res)
    update_sql = "INSERT into t_book(id,title,read,comment,pub_date) values (1,'<<python从入门到放弃>>',50,0,'2020-01-01');"
    Dbutil.uid_db(update_sql)
